Page({
  /**
   * 页面初始数据
   */
  data: {
    newsDetail: null,    // 当前新闻的详情数据
    isLoading: true,     // 加载中状态
    apiUrl: "https://v.api.aa1.cn/api/zhihu-news/"  // 核心API地址
  },

  /**
   * 页面加载时触发：接收列表页传的新闻ID，并获取详情
   */
  onLoad(options) {
    // options.id：列表页通过url传递的新闻ID（如：9784370）
    const newsId = options.id;
    if (newsId) {
      this.getNewsDetail(newsId);  // 根据ID获取对应新闻详情
    } else {
      // 无ID时，提示并返回列表页
      wx.showToast({ title: "参数错误", icon: "none" });
      this.goBackToList();
    }
  },

  /**
   * 核心函数：根据新闻ID获取详情（从API的news数组中匹配）
   * @param {string} targetId - 目标新闻ID
   */
  getNewsDetail(targetId) {
    wx.request({
      url: this.data.apiUrl,
      method: "GET",
      success: (res) => {
        const apiData = res.data;
        // 从新闻列表中，找到ID等于targetId的那条数据（即当前详情）
        const detail = apiData.news.find(item => item.id == targetId);
        
        this.setData({
          newsDetail: detail,  // 赋值详情数据
          isLoading: false     // 关闭加载状态
        });
      },
      fail: (err) => {
        // 请求失败：提示+关闭加载
        wx.showToast({ title: "加载失败", icon: "none" });
        this.setData({ isLoading: false });
        console.error("详情加载失败：", err);
      }
    });
  },

  /**
   * 跳转原文链接：用小程序内置浏览器打开知乎原文
   */
  gotoOriginalUrl() {
    const originalUrl = this.data.newsDetail.share_url;
    if (originalUrl) {
      // 1. 先判断web-view页面是否存在（避免路径错误）
      // 2. 用encodeURIComponent编码URL，防止特殊字符（如?&）导致参数截断
      wx.navigateTo({
        url: `/pages/webview/webview?url=${encodeURIComponent(originalUrl)}`,
        // 跳转失败的回调（便于排查问题）
        fail: (err) => {
          console.error("跳转web-view失败：", err);
          wx.showToast({
            title: "跳转失败，请检查页面路径",
            icon: "none"
          });
        }
      });
    } else {
      wx.showToast({ title: "无原文链接", icon: "none" });
    }
  },

  /**
   * 返回新闻列表页
   */
  goBackToList() {
    wx.navigateBack({
      delta: 1  // 返回上一级页面（即列表页）
    });
  },

  /**
   * 小程序自带返回按钮：点击导航栏“返回”时触发（可选，优化体验）
   */
  onUnload() {
    // 无需额外操作，默认返回上一页
  }
});